package com.engine4cloud.tdf.supervision.dto.update;

import com.engine4cloud.tdf.supervision.dto.JzdxChangePlaceDTO;
import com.engine4cloud.tdf.supervision.dto.JzdxDieDTO;
import com.engine4cloud.tdf.supervision.dto.JzdxFileDTO;
import com.engine4cloud.tdf.supervision.dto.JzdxPrisonDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 矫正对象-解除-请求对象
 *
 * @author wenjie
 * @date 2024-04-11 17:40:57
 */
@Data
@Schema(description = "矫正对象-解除-请求对象")
public class JzdxReleaseUpdateDTO implements Serializable {

    /**
     * 主键
     */
    @Schema(description = "主键")
    @NotNull(message = "主键不能为空")
    private Long id;

    /**
     * 解矫类型
     */
    @Schema(description = "解矫类型", example = "01")
    @NotBlank(message = "解矫类型不能为空")
    private String jjlx;

    /**
     * 解矫日期
     */
    @Schema(description = "解矫日期", example = "2024-01-01")
    @NotNull(message = "解矫类型不能为空")
    private LocalDate jjrq;

    /**
     * 矫正期间表现
     */
    @Schema(description = "矫正期间表现", example = "01")
    @NotBlank(message = "矫正期间表现不能为空")
    private String jzqjbx;

    /**
     * 认罪态度
     */
    @Schema(description = "认罪态度", example = "01")
    @NotBlank(message = "认罪态度不能为空")
    private String rztd;

    /**
     * 矫正期间是否参加职业技能培训
     */
    @Schema(description = "矫正期间是否参加职业技能培训", example = "0")
    @NotBlank(message = "矫正期间是否参加职业技能培训不能为空")
    private String sfcjzyjnpx;

    /**
     * 矫正期间是否获得职业技能证书
     */
    @Schema(description = "矫正期间是否获得职业技能证书", example = "0")
    @NotBlank(message = "矫正期间是否获得职业技能证书不能为空")
    private String sfhdzyjnzs;

    /**
     * 技术特长及等级
     */
    @Schema(description = "技术特长及等级", example = "头发特别长")
    private String jstcjdj;

    /**
     * 危险性评估
     */
    @Schema(description = "危险性评估", example = "01")
    @NotBlank(message = "危险性评估不能为空")
    private String wxxpg;

    /**
     * 家庭联系情况
     */
    @Schema(description = "家庭联系情况", example = "01")
    @NotBlank(message = "家庭联系情况不能为空")
    private String jtlxqk;

    /**
     * 矫正期间特殊情况备注及帮教建议
     */
    @Schema(description = "矫正期间特殊情况备注及帮教建议")
    private String tsqkbzjbjjy;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String bz;

    /**
     * 司法所解除人
     */
    @Schema(description = "司法所解除人", example = "老李")
    @NotBlank(message = "司法所解除人不能为空")
    private String sfsjcr;

    /**
     * 司法所解除时间
     */
    @Schema(description = "司法所解除时间", example = "2024-01-01 00:00:00")
    @NotNull(message = "司法所解除时间不能为空")
    private LocalDateTime sfsjcsj;

    /**
     * 收监执行
     */
    @Schema(description = "收监执行，当终止类型选择收监执行时，该项必填")
    private JzdxPrisonDTO prison;

    /**
     * 死亡
     */
    @Schema(description = "死亡，当终止类型选择死亡时，该项必填")
    private JzdxDieDTO die;

    /**
     * 执行地变更
     */
    @Schema(description = "执行地变更，当终止类型选择执行地变更时，该项必填")
    private JzdxChangePlaceDTO changePlace;

    /**
     * 矫正解除相关法律文书
     */
    @Schema(description = "矫正解除相关法律文书", example = "[{\"name\": \"张三矫正解除证明书.doc\",\"url\": \"/users/张三矫正解除证明书.doc\"}" +
            ",{\"name\": \"张三解除矫正通知书.doc\",\"url\": \"/users/解除矫正通知书.doc\"},{\"name\": \"张三矫正解除宣告书.doc\"" +
            ",\"url\": \"/users/张三矫正解除宣告书.doc\"}]")
    private List<JzdxFileDTO> instrumentList;
}